package palette;

import java.awt.*;
import java.util.Vector;
import javax.swing.*;

import patternobserver.Observateur;

public class VuePalette extends JToolBar implements Observateur {
	
	private ControleurPalette conPalette;
	
	public VuePalette(ControleurPalette c) {
		this.conPalette = c;
		this.setFloatable(false);
		this.setPreferredSize(new Dimension(150,100)); //default 150,100
		this.setLayout(new FlowLayout(0, 2, 2));
		this.setBackground(new Color((int) 0xc8ddf2));
		
		// Boucle qui crée des BoutonCouleur à partir du modele
		
		JLabel js = new JLabel("Couleur standard :        ");
		this.add(js);
		
		Vector<Color> lesCouleursDuModel = conPalette.getModPalette().getLesCouleurs();
		int nombreDeCouleur = lesCouleursDuModel.size();
		BoutonCouleur boutons[] = new BoutonCouleur[nombreDeCouleur];
		
		for (int i = 0; i < boutons.length; i++) {
			boutons[i] = new BoutonCouleur(lesCouleursDuModel.get(i));
			boutons[i].addActionListener(conPalette);
			this.add(boutons[i]);
		}

		// Fin de la génération de la palette de couleur

		JLabel jl = new JLabel("Couleur actuelle : ");
		this.add(jl);
		JLabel jr = new JLabel("              ");
		this.add(jr);
		CouleurSelection cs = new CouleurSelection(this.conPalette);
		this.add(cs);
		JLabel jp = new JLabel("Couleur personnalisée : ");
		this.add(jp);
		OptionPalette op = new OptionPalette(conPalette.getModPalette());
		this.add(op);

	   // 
	
	// Fin de la génération de la palette de couleur
		
 }// descendu
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);

	}

	@Override
	public void update() {
		System.out.println("update de la palette");
		this.repaint();
	}
}

class CouleurSelection extends JPanel {
	
	private ControleurPalette conPalette;

	public CouleurSelection(ControleurPalette c) {
		this.conPalette = c;
		this.setPreferredSize(new Dimension(30, 30));
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		this.setBackground(conPalette.getModPalette().getChoixColor());
	}
}

class BoutonCouleur extends JButton {

	public BoutonCouleur(Color c) {
		String rgb = String.valueOf(c.getRed()) + "/"
				+ String.valueOf(c.getGreen()) + "/"
				+ String.valueOf(c.getBlue());
		// System.out.println("rgb : "+rgb);
		this.setActionCommand(rgb);
		this.setPreferredSize(new Dimension(25, 25));
		this.setBackground(c);
	}	
}

class BoutonAjouter extends JButton {
	
	private String nom;
	
	public BoutonAjouter(String str) {
	super(str);
	this.nom = str;	
	//this.setPreferredSize(new Dimension(50, 50));
	//this.setBackground(new Color((int) 0xc8ddf2));
	}
}